package com.ruoyi.service.message.enums;

import lombok.Getter;

/**
 * <p>
 * 作用：消息类型
 * </p>
 *
 * @author Zane
 * @since 2025-10-25 10:17
 */
@Getter
public enum MessageTypeEnum {

  /**
   * 系统消息：由系统自动发送的通知（如账户变动、功能更新等）
   */
  SYSTEM_MSG("SYS", "系统消息"),

  /**
   * 评价消息：用户之间的评价互动（如商家对创作者的评价、互评等）
   */
  EVALUATION_MSG("EVAL", "评价消息"),

  /**
   * 项目消息：与项目相关的沟通内容（如需求对接、进度反馈、任务分配等）
   */
  PROJECT_MSG("PROJ", "项目消息");

  // 消息类型编码（用于数据库存储、接口传输）
  private final String code;
  // 消息类型描述（用于前端展示、日志说明）
  private final String description;

  /**
   * 构造方法
   *
   * @param code        消息类型编码
   * @param description 消息类型描述
   */
  MessageTypeEnum(String code, String description) {
    this.code = code;
    this.description = description;
  }

  /**
   * 根据编码获取枚举实例
   *
   * @param code 消息类型编码
   * @return 对应的枚举实例，若未匹配则返回null
   */
  public static MessageTypeEnum getByCode(String code) {
    for (MessageTypeEnum type : values()) {
      if (type.code.equals(code)) {
        return type;
      }
    }
    throw new IllegalArgumentException("暂未支持消息类型: " + code);
  }
}
